<?php

if(!(isset($_SESSION))) session_start();

class Calendari_Controller {
    
    # Constructor del controlador carregat. Tambe es passen les variables de les accions que es desitgin fer ser servir
    public function __construct($getVariables) {
        
        # Cas especial si ets l'usuari adminsitrador de Calendar
        if(isset($_SESSION["usuari"])) {
            $data_usuari = unserialize($_SESSION["usuari"]);
            if($data_usuari->getMail() == "admin@gmail.com") {
                if(!(isset($_POST["idevent"]))) {
                    $_SESSION["usuari"] = serialize($data_usuari);
                    header("Location: ".SITE_ROOT."/index.php?usuari");
                }
                else {
                    $getVariables["action"] = "DELETE_EVENT_ACTION";
                }
            }
            else $_SESSION["usuari"] = serialize($data_usuari);
        }
        
        $event = null;
        
        # Les nostres accions a executar dins de cada controlador poden ser des de la carrega d'una vista a l'acció de desar dades en la base de dades
        if(isset($getVariables["action"])) {
            if(strlen($getVariables["action"]) > 0) $vista_a_devolver = $getVariables["action"];
        }
        else $vista_a_devolver = null;

        
        $peticiones = array(
            "SET_EVENT_ACTION",
            "DELETE_EVENT_ACTION",
            "UPDATE_EVENT_ACTION",
            "ACCEPT_EVENT_ACTION", "DECLINE_EVENT_ACTION",
            "DEFAULT_USUARI","LOGOUT_CALENDARI"
            );

        foreach($peticiones as $peticion) {
            $peticion_url = $peticion;

            if($vista_a_devolver == $peticion_url) {
                $event = $peticion;
            }
        }

        # Selecció de l'acció
        switch ($event) {
            case "SET_EVENT_ACTION":
                if(isset($_POST["Data"]) && $_POST["horaInici"] && $_POST["horaFi"] && $_POST["nomEvent"] && $_POST["textEvent"] && $_POST["tipusEvent"]) {
                    //if(isset($_POST["checkbox_invitats_string"])) print $_POST["Data"]. " / ".$_POST["horaInici"]." / ".$_POST["horaFi"]. " / ".$_POST["nomEvent"]." / ".$_POST["textEvent"]." / ".$_POST["tipusEvent"]." / ".$_POST["checkbox_invitats_string"];
                    //else print $_POST["Data"]. " / ".$_POST["horaInici"]." / ".$_POST["horaFi"]. " / ".$_POST["nomEvent"]." / ".$_POST["textEvent"]." / ".$_POST["tipusEvent"];

                    $data_usuari = unserialize($_SESSION["usuari"]);

                    if(!(isset($_POST["checkbox_invitats_string"]))) $event_insertar = new Event_Model($data_usuari->getMail(), $_POST["textEvent"], $_POST["nomEvent"], $_POST["tipusEvent"], $_POST["Data"], $_POST["horaInici"], $_POST["horaFi"], NULL);
                    else $event_insertar = new Event_Model(NULL, $data_usuari->getMail(), $_POST["textEvent"], $_POST["nomEvent"], $_POST["tipusEvent"], $_POST["Data"], $_POST["horaInici"], $_POST["horaFi"], $_POST["checkbox_invitats_string"]);
                    $event_insertar->set();
                    
                    $data_usuari->setEventUsuari($event_insertar, $data_usuari->getNumberOfEvents());
                    //print $data_usuari->getEventUsuari(($data_usuari->getNumberOfEvents())-1)->invitatseventobjecte[0]->getMailUser();
                    
                    $_SESSION["usuari"] = serialize($data_usuari);
                    header("Location: ".SITE_ROOT."/index.php?calendari");

                }
                else header("Location: ".SITE_ROOT."/index.php?calendari");
                break;
                
            case "ACCEPT_EVENT_ACTION":
                if(isset($_SESSION["usuari"])) {
                    if(isset($_GET["idevent"]) && isset($_GET["email_invitat"])) {
                        $operacions = new MySQL_Driver();
                        $operacions->query = "UPDATE invitats set aceptat = 1 WHERE idevent = ".$_GET["idevent"]." AND mailuser = '".$_GET["email_invitat"]."'";
                        $operacions->execute_single_query();

                        /*
                        $operacions->query = "SELECT * FROM event WHERE id = ".$_GET["idevent"];
                        $operacions->get_results_from_query();

                        $data_usuari = unserialize($_SESSION["usuari"]);
                        foreach ($operacions->rows as $value) {
                            if($value["id"] == '') break;

                            $event_insertar = new Event_Model($value["id"], $data_usuari->getMail(), $value["motiu"], $value["titol"], $value["categoria"], $value["datainici"], $value["horainici"], $value["horafi"], NULL);
                            $data_usuari->setEventUsuari($event_insertar, $data_usuari->getNumberOfEvents());
                            print $value["id"]." / ".$data_usuari->getMail()." / ".$value["motiu"]." / ".$value["titol"]." / ".$value["categoria"]." / ".$value["datainici"]." / ".$value["horainici"]." / ".$value["horafi"];
                        }
                        $_SESSION["usuari"] = serialize($data_usuari);
                        unset($operacions->rows);
                        */
                        
                        unset($operacions);
                        header("Location: ".SITE_ROOT."/index.php?calendari");
                    }
                    else header("Location: ".SITE_ROOT."/index.php?calendari");
                }
                else header("Location: ".SITE_ROOT."/index.php?calendari");
                break;
            
            case "DELETE_EVENT_ACTION":
                if(isset($_SESSION["usuari"])) {
                    if(isset($_POST["idevent"])) {
                        //print $_POST["idevent"];
                        $data_usuari = unserialize($_SESSION["usuari"]);
                        
                        if($data_usuari->getMail() == "admin@gmail.com") {
                            $conexion = new mysqli("localhost", "root", "root", "calendaridaw2");
                            $conexion->query("DELETE FROM event WHERE id = ".$_POST["idevent"]);                            
                            $conexion->close();
                        }
                        else {
                            $event_eliminar = $data_usuari->getEventUsuariID($_POST["idevent"]);
                            $event_eliminar->delete();
                            $data_usuari->deleteEventUsuari($_POST["idevent"]);
                            $event_eliminar->__destruct();
                        }
                        
                        $_SESSION["usuari"] = serialize($data_usuari);
                        header("Location: ".SITE_ROOT."/index.php?calendari");
                    }
                    else header("Location: ".SITE_ROOT."/index.php?calendari");
                }
                else header("Location: ".SITE_ROOT."/index.php?calendari");
                break;
            
            case "UPDATE_EVENT_ACTION":
                if(isset($_SESSION["usuari"])) {
                    if(isset($_POST["idevent"]) && isset($_POST["Data_editar"]) && isset($_POST["horaInici_editar"]) && isset($_POST["nomEvent_editar"]) && isset($_POST["horaFi_editar"]) && isset($_POST["textEvent_editar"])) {
                        //print $_POST["idevent"]." - ".$_POST["Data_editar"]." - ".$_POST["horaInici_editar"]." - ".$_POST["nomEvent_editar"]." - ".$_POST["horaFi_editar"]." - ".$_POST["textEvent_editar"]." - ".$_POST["categoria_editar"];
                        $data_usuari = unserialize($_SESSION["usuari"]);
                        
                        $event_editar = $data_usuari->getEventUsuariID($_POST["idevent"]);
                        $posicio_editar = $data_usuari->getEventUsuariPosicio($_POST["idevent"]);
                        $event_editar->edit($_POST["textEvent_editar"], $_POST["nomEvent_editar"], $_POST["categoria_editar"], $_POST["Data_editar"], $_POST["horaInici_editar"], $_POST["horaFi_editar"]);
                        $data_usuari->setEventUsuari($event_editar, $posicio_editar);
                        $event_editar->__destruct();
                        
                        $_SESSION["usuari"] = serialize($data_usuari);
                        header("Location: ".SITE_ROOT."/index.php?calendari");
                    }
                    else {
                        header("Location: ".SITE_ROOT."/index.php?calendari");
                    }
                }
                else header("Location: ".SITE_ROOT."/index.php?calendari");
                break;
                
            case "DECLINE_EVENT_ACTION":
                if(isset($_SESSION["usuari"])) {
                    if(isset($_GET["idevent"]) && isset($_GET["email_invitat"])) {
                        $operacions = new MySQL_Driver();
                        $operacions->query = "DELETE FROM invitats WHERE idevent = ".$_GET["idevent"]." AND mailuser = '".$_GET["email_invitat"]."'";
                        $operacions->execute_single_query();
                        unset($operacions);
                        header("Location: ".SITE_ROOT."/index.php?calendari");
                    }
                    else header("Location: ".SITE_ROOT."/index.php?calendari");
                }
                else header("Location: ".SITE_ROOT."/index.php?calendari");
                break;
            
            case "DEFAULT_USUARI":
                header("Location: ".SITE_ROOT."/index.php?usuari");
                break;
            
            case "LOGOUT_CALENDARI":
                if(isset($_SESSION["usuari"])) {
                    unset($_SESSION["usuari"]);
                }
                header("Location: ".SITE_ROOT."/index.php?usuari");
                break;
           
            # En el cas de que no es tingui una acció definida o fins hi tot s'intenti executar una
            # acció que no exisiteixi o no cumpleixi uns requisits previs retornarem l'acció per defecte
            default:
                if(!(isset($_SESSION["usuari"]))) header("Location: ".SITE_ROOT."/index.php?usuari");
                $view = new Calendari_View();
                $view->devolver_vista("VIEW_DEFAULT_CALENDARI");
        }
    }
    
}

?>